<?php

// 1  定义一些常量路径
// 定义框架路径
define('XBS_PATH', '../xbs');
// 定义公共目录路径
define('COMMON_PATH',XBS_PATH."/common");
// 定义资源目录路径
define('LIB_PATH',XBS_PATH."/lib");
// 定义核心目录路径
define('CORE_PATH',XBS_PATH."/core");

include COMMON_PATH.'/functions.php';
// 2  解析路由

// 解析路由

if(config('url_model')){

    $pathinfo = $_SERVER['PATH_INFO'];

    $pathArr = explode("/",$pathinfo);

    $module = isset($pathArr[1]) && !empty($pathArr[1])  ? strtolower($pathArr[1]) :config('defalut_module');

    $controller = isset($pathArr[2]) && !empty($pathArr[2]) ? ucfirst(strtolower($pathArr[2])) :config('defalut_controller');

    $action = isset($pathArr[3]) && !empty($pathArr[3]) ? strtolower($pathArr[3]) :config('defalut_action');

}else{
    $module = isset($_GET['m']) ? strtolower($_GET['m']) :config('defalut_module');

    $controller = isset($_GET['c']) ? ucfirst(strtolower($_GET['c'])) :config('defalut_controller');

    $action = isset($_GET['a']) ? strtolower($_GET['a']) :config('defalut_action');

}

// 定义常量
define('MODULE_NAME', $module);
define('CONTROLLER_NAME', $controller);
define('ACTION_NAME', $action);

define('MODULE_PATH',APP_PATH."/".$module);
define('CONTROLLER_PATH',MODULE_PATH."/controller");
define('MODEL_PATH',MODULE_PATH."/model");
define('VIEW_PATH',MODULE_PATH."/view");

// var_dump($module,$controller,$action);

// var_dump(strstr('sdfsdf_path','_paths'));exit;

function xsb_autoload($classname)
{
    $arr = get_defined_constants(true)['user'];
    // $paths = [
    //     CONTROLLER_PATH."/".$classname.".class.php",
    //     CORE_PATH."/".$classname.".class.php",
    //     LIB_PATH."/".$classname.".class.php"
    // ];

    foreach ($arr as $k => $v) {

        if(strstr($k,'_PATH')){
            $path = $v."/".$classname.".class.php";
            if(file_exists($path)){
                include $path;
                return;
            }
        }
    }
}


spl_autoload_register("xsb_autoload");
// 3  映射对应控制器

// 创建控制器，创建方法

$controller_name = $controller."Controller";

$obj = new $controller_name();

$obj->$action();

// 4  自动加载